#pragma once

#include "BasicObject.h"
#include "PersonalityTraitMotivational.h"
#include "functionp2distance.h"
#include "functionp2lineardecay.h"

namespace BAA
{

	class Personality_Power:public PersonalityTraitMotivational
	{
	public:
		Personality_Power():PersonalityTraitMotivational("power")
		{

		}

		~Personality_Power()
		{
			
			
		}

		void Create()
		{
			mValue = 0.5f;
			mSetPoint = 0.5f;
			Vector2 vec = {0,1};
			Vector2 vec2 = {0,1};
			mDesireFunction = new FunctionP2LinearDistance("FunctionLinearDistance",vec2);
			mDecayFunction = new FunctionP2LinearDecay("FunctionLinearDecay", vec);
		}
	};// end class

	class Personality_Curiosity:public PersonalityTraitMotivational
	{
	public:
		Personality_Curiosity():PersonalityTraitMotivational("curiosity")
		{

		}

		~Personality_Curiosity()
		{

			

		}

		virtual void Create()
		{
			mValue = 0.5f;
			mSetPoint = 0.5f;
			Vector2 vec = {0,1};
			Vector2 vec2 = {0,1};
			mDesireFunction = new FunctionP2LinearDistance("FunctionLinearDistance",vec2);
			mDecayFunction = new FunctionP2LinearDecay("FunctionLinearDecay", vec);
		}
	};// end class

	class Personality_Independence:public PersonalityTraitMotivational
	{
	public:
		Personality_Independence():PersonalityTraitMotivational("independence")
		{

		}

		~Personality_Independence()
		{

			

		}

		virtual void Create()
		{
			mValue = 0.5f;
			mSetPoint = 0.5f;
			Vector2 vec = {0,1};
			Vector2 vec2 = {0,1};
			mDesireFunction = new FunctionP2LinearDistance("FunctionLinearDistance",vec2);
			mDecayFunction = new FunctionP2LinearDecay("FunctionLinearDecay", vec);
		}
	};// end class

	class Personality_Status:public PersonalityTraitMotivational
	{
	public:
		Personality_Status():PersonalityTraitMotivational("status")
		{

		}

		~Personality_Status()
		{

			

		}

		virtual void Create()
		{
			mValue = 0.5f;
			mSetPoint = 0.5f;
			Vector2 vec = {0,1};
			Vector2 vec2 = {0,1};
			mDesireFunction = new FunctionP2LinearDistance("FunctionLinearDistance",vec2);
			mDecayFunction = new FunctionP2LinearDecay("FunctionLinearDecay", vec);
		}
	};// end class


	class Personality_SocialContact:public PersonalityTraitMotivational
	{
	public:
		Personality_SocialContact():PersonalityTraitMotivational("socialcontact")
		{

		}

		~Personality_SocialContact()
		{

			

		}

		virtual void Create()
		{
			mValue = 0.5f;
			mSetPoint = 0.5f;
			Vector2 vec = {0,1};
			Vector2 vec2 = {0,1};
			mDesireFunction = new FunctionP2LinearDistance("FunctionLinearDistance",vec2);
			mDecayFunction = new FunctionP2LinearDecay("FunctionLinearDecay", vec);
		}
	};// end class


	class Personality_Vengeance:public PersonalityTraitMotivational
	{
	public:
		Personality_Vengeance():PersonalityTraitMotivational("vengeance")
		{

		}

		~Personality_Vengeance()
		{

			

		}

		virtual void Create()
		{
			mValue = 0.5f;
			mSetPoint = 0.5f;
			Vector2 vec = {0,1};
			Vector2 vec2 = {0,1};
			mDesireFunction = new FunctionP2LinearDistance("FunctionLinearDistance",vec2);
			mDecayFunction = new FunctionP2LinearDecay("FunctionLinearDecay", vec);
		}
	};// end class


	class Personality_Honor:public PersonalityTraitMotivational
	{
	public:
		Personality_Honor():PersonalityTraitMotivational("honor")
		{

		}

		~Personality_Honor()
		{

			

		}

		virtual void Create()
		{
			mValue = 0.5f;
			mSetPoint = 0.5f;
			Vector2 vec = {0,1};
			Vector2 vec2 = {0,1};
			mDesireFunction = new FunctionP2LinearDistance("FunctionLinearDistance",vec2);
			mDecayFunction = new FunctionP2LinearDecay("FunctionLinearDecay", vec);
		}
	};// end class


	class Personality_Idealism:public PersonalityTraitMotivational
	{
	public:
		Personality_Idealism():PersonalityTraitMotivational("idealism")
		{

		}

		~Personality_Idealism()
		{

			

		}

		virtual void Create()
		{
			mValue = 0.5f;
			mSetPoint = 0.5f;
			Vector2 vec = {0,1};
			Vector2 vec2 = {0,1};
			mDesireFunction = new FunctionP2LinearDistance("FunctionLinearDistance",vec2);
			mDecayFunction = new FunctionP2LinearDecay("FunctionLinearDecay", vec);
		}
	};// end class


	class Personality_PhysicalExcercise:public PersonalityTraitMotivational
	{
	public:
		Personality_PhysicalExcercise():PersonalityTraitMotivational("physicalexcercise")
		{

		}

		~Personality_PhysicalExcercise()
		{

			

		}

		virtual void Create()
		{
			mValue = 0.5f;
			mSetPoint = 0.5f;
			Vector2 vec = {0,1};
			Vector2 vec2 = {0,1};
			mDesireFunction = new FunctionP2LinearDistance("FunctionLinearDistance",vec2);
			mDecayFunction = new FunctionP2LinearDecay("FunctionLinearDecay", vec);
		}
	};// end class


	class Personality_Romance:public PersonalityTraitMotivational
	{
	public:
		Personality_Romance():PersonalityTraitMotivational("romance")
		{

		}

		~Personality_Romance()
		{

			

		}

		virtual void Create()
		{
			mValue = 0.5f;
			mSetPoint = 0.5f;
			Vector2 vec = {0,1};
			Vector2 vec2 = {0,1};
			mDesireFunction = new FunctionP2LinearDistance("FunctionLinearDistance",vec2);
			mDecayFunction = new FunctionP2LinearDecay("FunctionLinearDecay", vec);
		}
	};// end class


}// end namespace
